﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Runtime.CompilerServices;
using Com.Binaria.Core;
using Com.Binaria.Core.Base;
using Com.Binaria.Core.Dto;
using Com.Binaria.Core.Util;
using Com.Binaria.Core.Datos;
using Com.Binaria.SISCOB.DTO;

namespace Com.Binaria.SISCOB.DAO
{
/// <summary>
///	Clase encargada de la gestion de informacion del objeto Egreso
/// </summary>
public partial class EgresoDAO :IEgresoDAO 
{
	#region metodos publicos

	

	
	///<summary>
	///Metodo que obtinen todos los registro en la tabla Egreso que coincidan
	///con los campos de busqueda provistos por el dto (EgresoDTO
	///</summary>
	///<param name="EgresoDTO"></param>
	///<returns></returns>
	public List<EgresoDTO> FindPag(EgresoDTO dtoin)
	{
		EgresoDTO dto= ((EgresoDTO)dtoin);
		DatosService servicio= Factoria.ServicioDatos("SISCOB");
		DbParameter[] parameters = servicio.GetParameterCollection(13);
		
		parameters[0] = servicio.GetParameter();
		parameters[0].Direction=ParameterDirection.Input;
		parameters[0].ParameterName="@Id";
		parameters[0].Value=AssertNull.getValueToBD(dto.Id);
		parameters[0].DbType=DbType.Int32;
		
		parameters[1] = servicio.GetParameter();
		parameters[1].Direction=ParameterDirection.Input;
		parameters[1].ParameterName="@EsManual";
		parameters[1].Value=AssertNull.getValueToBD(dto.EsManual);
		parameters[1].DbType=DbType.Boolean;
		
		parameters[2] = servicio.GetParameter();
		parameters[2].Direction=ParameterDirection.Input;
		parameters[2].ParameterName="@Estado";
		parameters[2].Value=AssertNull.getValueToBD(dto.Estado);
		parameters[2].DbType=DbType.AnsiStringFixedLength;

        parameters[3] = servicio.GetParameter();
        parameters[3].Direction = ParameterDirection.Input;
        parameters[3].ParameterName = "@Pagina";
        parameters[3].Value = AssertNull.getValueToBD(dto.Pagina);
        parameters[3].DbType = DbType.Int32;

        parameters[4] = servicio.GetParameter();
        parameters[4].Direction = ParameterDirection.Input;
        parameters[4].ParameterName = "@RegistrosPagina";
        parameters[4].Value = AssertNull.getValueToBD(dto.SizePagina);
        parameters[4].DbType = DbType.Int64;

        parameters[5] = servicio.GetParameter();
        parameters[5].Direction = ParameterDirection.Input;
        parameters[5].ParameterName = "@CampoOrden";
        parameters[5].Value = AssertNull.getValueToBD(dto.ColumnOrden);
        parameters[5].DbType = DbType.AnsiString;

        parameters[6] = servicio.GetParameter();
        parameters[6].Direction = ParameterDirection.Input;
        parameters[6].ParameterName = "@Orden";
        parameters[6].Value = AssertNull.getValueToBD(dto.TipoOrden);
        parameters[6].DbType = DbType.AnsiString;

        parameters[7] = servicio.GetParameter();
        parameters[7].Direction = ParameterDirection.Input;
        parameters[7].ParameterName = "@NmrDocumento";
        parameters[7].Value = AssertNull.getValueToBD(dto.DocumentoTransaccion.NmrDocumento);
        parameters[7].DbType = DbType.AnsiString;

        parameters[8] = servicio.GetParameter();
        parameters[8].Direction = ParameterDirection.Input;
        parameters[8].ParameterName = "@FchDocumento";
        parameters[8].Value = AssertNull.getValueToBD(dto.DocumentoTransaccion.FchDocumento);
        parameters[8].DbType = DbType.DateTime;

        parameters[9] = servicio.GetParameter();
        parameters[9].Direction = ParameterDirection.Input;
        parameters[9].ParameterName = "@Monto";
        parameters[9].Value = AssertNull.getValueToBD(dto.DocumentoTransaccion.Monto);
        parameters[9].DbType = DbType.Int64;

        parameters[10] = servicio.GetParameter();
        parameters[10].Direction = ParameterDirection.Input;
        parameters[10].ParameterName = "@IdCuentaCorriente";
        parameters[10].Value = AssertNull.getValueToBD(dto.DocumentoTransaccion.IdCuentaCorriente);
        parameters[10].DbType = DbType.Int32;
		
        //Adicion Desde-Hasta
        parameters[11] = servicio.GetParameter();
        parameters[11].Direction = ParameterDirection.Input;
        parameters[11].ParameterName = "@FchDesde";
        parameters[11].Value = AssertNull.getValueToBD(dto.FchDesde);
        parameters[11].DbType = DbType.DateTime;

        parameters[12] = servicio.GetParameter();
        parameters[12].Direction = ParameterDirection.Input;
        parameters[12].ParameterName = "@FchHasta";
        parameters[12].Value = AssertNull.getValueToBD(dto.FchHasta);
        parameters[12].DbType = DbType.DateTime;

		IDataReader reader = servicio.ExecuteReader("spma_Egreso_FindPaginado",parameters);
		List<EgresoDTO> lista= CreateDtos(reader);
		
        return lista;
	}


    public List<EgresoDTO> FindCaducados(DateTime fchConsulta, Int16 diasMaximos)
    {
        DatosService servicio = Factoria.ServicioDatos("SISCOB");
        DbParameter[] parameters = servicio.GetParameterCollection(2);

        parameters[0] = servicio.GetParameter();
        parameters[0].Direction = ParameterDirection.Input;
        parameters[0].ParameterName = "@FchConsulta";
        parameters[0].Value = fchConsulta;
        parameters[0].DbType = DbType.DateTime;

        parameters[1] = servicio.GetParameter();
        parameters[1].Direction = ParameterDirection.Input;
        parameters[1].ParameterName = "@DiasMaximos";
        parameters[1].Value = diasMaximos;
        parameters[1].DbType = DbType.Int16;


        IDataReader reader = servicio.ExecuteReader("spma_Egreso_FindCaducados", parameters);
        List<EgresoDTO> lista = CreateDtos(reader);

        return lista;
    }

	#endregion
	}//End class EgresoDAO
}//End namespace



